Перейти к основному содержимому

📦 Сопровождение и выпуск обновлений

🎯 Цель раздела

После изучения этого раздела вы:

  • поймёте, как поддерживать пакеты в актуальном состоянии;
  • научитесь правильно оформлять changelog и релизы;
  • освоите цикл жизни пакета в ROSA Linux;
  • узнаете, как обеспечивается долгосрочная поддержка (LTS).

🧩 Жизненный цикл пакета

Путь любого пакета в ROSA Linux выглядит так:


Исходники → SPEC → SRPM → ABF Build → Repo → User → Update

Основные стадии:

  1. Создание пакета — разработка и первая публикация;
  2. Сопровождение — обновления версий, патчи, улучшения;
  3. Тестирование и ревью — проверка стабильности перед выпуском;
  4. Публикация в репозиторий — после успешной сборки на ABF;
  5. Поддержка и обновления — исправления уязвимостей, совместимость;
  6. EOL (End of Life) — окончание поддержки и архивация пакета.

🧱 Репозитории ROSA Linux

ROSA имеет несколько уровней репозиториев:

РепозиторийНазначение
mainОсновные стабильные пакеты
contribПакеты от сообщества
updatesОбновления и исправления
testingТестовые версии перед выпуском
backportsНовые версии для старых веток ROSA
restrictedПроприетарное или ограниченное ПО

💡 Новые версии пакетов сначала загружаются в testing, затем — после ревью и тестов — попадают в updates или main.


🧾 Правила обновления пакетов

  1. Повышайте Release, если меняется SPEC, патч или скрипт.
  2. Повышайте Version, если обновляется исходный код.
  3. В changelog всегда указывайте причину обновления.

Пример:

%changelog
* Mon Nov 3 2025 Sergey Braumann <sergeybraumann@gmail.com> 1.2-3
- Rebuild for updated glibc
- Minor spec cleanup

⚠️ Никогда не обновляйте пакет без изменения changelog — это обязательный элемент истории сопровождения.


⚙️ Проверка и тестирование обновлений

Перед публикацией обновлений необходимо проверить:

  1. Успешность сборки через rpmbuild или mock;
  2. Отсутствие ошибок rpmlint;
  3. Корректную установку и удаление пакета;
  4. Работоспособность функционала после обновления.

Пример проверки:

sudo dnf upgrade ./RPMS/x86_64/hello-1.2-3.x86_64.rpm

Проверка отката:

sudo dnf downgrade hello

🧩 Публикация обновлений через ABF

После сборки и проверки загрузите SRPM в Automated Build Farm (ABF):

abf build start hello.spec --branch update-1.2

После успешного билда:

  1. Пакет попадает в testing;
  2. После ревью и тестов — в updates;
  3. Финально — в стабильный репозиторий.

💡 Каждый билд в ABF имеет статус: pending → building → succeeded → published.


🔒 Поддержка и безопасность

Инженеры сопровождения отвечают за:

  • устранение уязвимостей (CVE);
  • обновления зависимостей без нарушения совместимости;
  • отслеживание изменений в upstream-проектах.

Инструменты:

dnf updateinfo
dnf updateinfo list cves

🛡️ Безопасность и своевременные исправления — ключевой аспект доверия пользователей к дистрибутиву.


🧠 Работа с LTS и EOL

ROSA поддерживает долгосрочные релизы (LTS) в течение нескольких лет. Пакеты в таких ветках:

  • обновляются только для исправления ошибок и уязвимостей;
  • не получают новых функций, чтобы сохранить стабильность;
  • архивируются после завершения поддержки (EOL).

Проверка состояния релиза

На странице пакета в ABF указывается:

Supported until: 2028-05-01
Status: Active / Frozen / EOL

🔄 Ведение changelog

Каждая запись должна содержать:

  • дату (в формате %a %b %d %Y);
  • имя и email сопровождающего;
  • версию и релиз;
  • краткое описание изменений.

Пример:

* Tue Nov 4 2025 Sergey Braumann <sergeybraumann@gmail.com> 1.2-4
- Security fix for CVE-2025-1045
- Updated documentation

💬 Для пакетов ROSA changelog обязателен — это не только журнал изменений, но и доказательство сопровождения.


📊 Мониторинг пакетов

Используйте инструменты ABF и CLI для анализа активности:

abf build list --package hello
abf build info 98765

На сайте ABF доступна статистика:

  • дата последней сборки;
  • автор изменений;
  • лог сборки;
  • список публикаций.

🧠 Мини-тест для самопроверки

ВопросОтвет
Что означает EOL?Конец жизненного цикла пакета (End of Life)
Где публикуются стабильные обновления?В репозитории updates
Что нужно сделать перед обновлением пакета?Проверить сборку, зависимости и changelog
Что означает Release: 3%{?dist}?Третий выпуск сборки текущей версии
Где ведётся changelog?В конце SPEC-файла

🧭 Итого

Теперь вы:

  • понимаете, как сопровождаются пакеты в ROSA Linux;
  • умеете обновлять версии и публиковать их через ABF;
  • знаете, как работает система репозиториев и LTS-поддержка;
  • готовы перейти к последнему этапу — продвинутым темам, таким как пакетирование Python, Go, Rust и сборка ядра.

Следующий документ — “Продвинутые темы пакетирования”, где мы рассмотрим особенности сборки нетривиальных пакетов и работу с современными языками.